home *** CD-ROM | disk | FTP | other *** search
/ Aminet 2 / Aminet AMIGA CDROM (1994)(Walnut Creek)[Feb 1994][W.O. 44790-1].iso / Aminet / game / role / MoriaGfxSrc_1_1.lha / source / ERRORS.original < prev    next >
Text File  |  1991-10-13  |  39KB  |  888 lines

  1. stores probably should buy items which have been marked {damned} by being worn
  2. and then cleared via remove curse, after all they buy unident damned items
  3.  
  4. creating traps can destroy staircases
  5.  
  6. chests should create treasure appropriate to the level they were found on,
  7. not the level that they are opened on
  8.  
  9. color MacMoria bugs: the colors dialog box says greed not green
  10.     the help dialog lists the wrong versions
  11.     my address is wrong
  12.  
  13. when wearing a ring of speed, light should not be used up as fast, the faster
  14. you are moving, the more turns it should last
  15. - by the same reasoning, store lockout are broken too, in fact just about
  16.   anything using time won't work `correctly' when character is sped up
  17.  
  18. calling put_qio() every turn during running significantly slows it down
  19. on slow hosts which are using curses, I believe it was added only for
  20. aesthetics, and it probably isn't strictly necessary, could at least
  21. surround it with an #ifndef FAST_RUNNING or similar
  22.  
  23. when thief steals an object, say what was stolen in message
  24. when item in backpack is destroyed, indicate what item was destroyed
  25. inventory does not take a turn
  26.  
  27. display_scores(), at end of the game, should display top 15 or so scores, and
  28. list the current player's score below that if not in the top 15 list, at least,
  29. the value of show_player should be false at the end
  30. - better, display_scores can put a message line at the bottom like this
  31.     ( ESC : return to game    space : toggle all scores/your scores)
  32. and then the player can easily choose which scores to see
  33.  
  34. the 32767 limit in the recall code for number of monsters killed is too
  35. easy to reach, making it unsigned will extend the range to 65535,
  36. making it a long would increase program size by 2K, I don't think that this
  37. change is worth the extra memory used
  38.  
  39. Mac: choosing `9 point' from the screen menu results in a 1" square window
  40. which won't expand or grow, switching back to 12 point gives a huge window
  41. with type that appears to be about 100 points or so
  42.  
  43. monsters should probably not be summoned on top of a rune of protection
  44.  
  45. could make scorefile code more efficient if I read/write more than one entry
  46. at a time
  47.  
  48. for MSDOS: shouldn't the treasure.c file change '#' to wallsym, and '.'
  49.   to floorsym?, shouldn't the save.c file change '.' to floorsym and vice
  50.   versa, just like it already does for wallsym?
  51.  
  52. VMS curses apparently has a bug, during resting, the program continually
  53. moves the cursor to the @ sign, which is a no-op and should result in no
  54. output, but the VMS curses code outputs control commands to the terminal,
  55. this makes resting run slow on bandwidth limited terminals
  56.  
  57. VMS has 32 bit user ids (UIC), should increase the size of uid's in the
  58. scorefile to 32 bits, and then make the vms uic = getgid()<<16+getuid()
  59. which is 32 bits
  60.  
  61. remove the hours support for all micros, or else give people the option
  62. in the config.h file to remove it
  63.  
  64. when functions are not used, ifdef out the calls instead of providing
  65. dummy functions, to save some space
  66.  
  67. save.c creates two files under VMS, because it first calls 'open' and
  68. then later calls 'fopen', rewrite so that only one file will be created
  69.  
  70. in store.c, the comment "Your mother was a troll!" doesn't mean anything
  71. if you are a half-troll, change to Ogre?
  72.  
  73. the ms_misc.c file maps the 'Ins' key, which is the '0' key to 'i',
  74. this confuses the hell out of a lot of people, this IS documented, but
  75. few people read the documentation
  76.  
  77. add a turns counter to the higscores entry, and check this when restoring
  78. a character, don't score the character if this value is different
  79. this prevents someone from playing a character, goofing, saving it while
  80. alive, and then going back to the first savefile
  81.  
  82. haste self is a level 1 potion, and super heroism is level 3, both
  83. seem far too low of a level for the potions considering how useful they
  84. are, increasing the levels would make them more common deeper in the dungeon
  85. restore potions are level 40 are too deep, they are available in the stores,
  86. and just aren't that powerful of a potion
  87. DJG: haste self is needed at level 1 for early encounters with nasty monsters
  88. super heroism could be higher
  89.  
  90. the sorting code does not work with foodstuffs, problem is that when
  91. restore a 5.2.1 character which has unsorted food, the new code may
  92. put a food ration at the start instead of merging it with the other unsorted
  93. food, thus overflowing the inventory size, there are few 5.2.1 characters
  94. left anyways, so perhaps this isn't much of a problem anymore
  95.  
  96. wine/ale should be potions to be quaffed, not foodstuffs to be eaten
  97.  
  98. ^M = ^J when digging, can't really solve well, because of bugs in some
  99. version of curses which requires this to be true
  100.  
  101. perhaps add an option to control the Drop One/Drop All query for multiple
  102. stacking items
  103.  
  104. the choice of whether or not duplicate characters should be scored should
  105. really be an option in the config.h file, since there exist single-user
  106. unix machines, and multi-user IBM-PCs (on a network)
  107. - also, the decision of whether to limit each player to one entry per
  108. character type should be an option (perhaps the same one)
  109.  
  110. give warriors a better chance of detecting that ego weapons are magik,
  111. but only for ego weapons, not all items
  112.  
  113. an inscription is lost when two objects are merged, either choose longest,
  114. or ask player, try to combine them, at least do something
  115.  
  116. Macintosh
  117. - mac version does not clear screen after saving a character
  118.   restart variables are not reset as they should (maybe fixed?)
  119. - mac moria crashes with the 384 size resource?, works fine with 512k size
  120. - mac moria crashes when trying to write past the end of the screen,
  121.   specifically, if have a weapon with more than 80 characters, and put it last
  122.   in the equipment list, then mac version will crash
  123.   add code to put_buffer to truncate strings?
  124. - the CRuntime.o and CLibraries.o ARE needed for the mac makefiles.
  125. - the file type and creator are not set for the character stats file
  126. - when save a game and hit the cancel button, it still says the
  127.   game is being saved even though it isn't
  128. - when a character dies, the savefile is not marked as dead
  129. - should be able to find config file in same directory as the program
  130. - should get version number from constants, not hardwired into resources
  131. - should have color menu enabled even on B&W monitor, so you can switch
  132.     black and white if desired
  133. - does not work on 512K mac, seems to be enough memory, but it uses routines
  134.     which are not in the old ROMS, 512K macs are obsolete, so this is
  135.     probably not worth fixing
  136.  
  137. IBMPC
  138. - received report that -w command gives 'file from wrong version' error
  139. - when followed by monster, and reach edge of screen, sometimes the game
  140.   hangs and you must type a character for it to continue, either a Turbo C
  141.   bug or a PC-Moria bug
  142. - tunneling does not work with the numeric keypad when using rogue-like mode,
  143.   i.e. ctrl-4
  144. - on PC, only draw during traceback, perhaps make this an option, this is
  145.   a CGA specific problem (most people have VGA now a days), and only applies
  146.   to the Turbo C builtin screen code, tcio.c, PC-Curses does not have this
  147.   problem, in Turbo Pascal, there is a variable in the CRT unit that one
  148.   can set to enable this feature
  149. - tcio.c file does not handle redraw ^R at all
  150.  
  151. run under Saber C to see if that turns up any bugs
  152.  
  153. - when read curse weapon on a HA/DF weapon, the code does not clear the AC
  154.   bonus of the weapon, cursed gauntlets of slaying don't lose +tohit/+todam,
  155.   and other cases should be fixed also
  156. - if you curse a special magic item (HA, RF, etc), it retains its very high
  157.   value, its cost should be reset to the value in object_list[index]
  158. - if you curse a special cursed object (noise, irritation), it will lose its
  159.   special cursed ability (two wrongs make a right?!?), this should not happen,
  160.   instead of clearing ALL flag bits, should only clear the 'good' ones
  161.  
  162. if wield a torch, and a silver jelly immediately drains it to 1,
  163. the program will be confused for one turn thinking that you still have
  164. light even though you don't
  165.  
  166. scoring unfair to humans/warriors/etc, since they have a lower max exp than
  167. other race/classes, should adjust exp downward by inflationary factors
  168. when calculating score?
  169. DJG: unnecessary
  170.  
  171. should reduce stack usage in generate.c
  172.  
  173. in the store, should have some way to determine how close one is to
  174. getting perfect haggling
  175.  
  176. replace all of those heavy weapon messages with an automatic inscription,
  177. how should this be maintainted, should it change only when wielded,
  178. or should it change whenever the players strength changes?
  179.  
  180. throwing a lot of objects into a pile can cause problems?
  181.  
  182. make the printing of stuff under monsters an option for those who find
  183. it bothersome
  184.  
  185. make monster movement more intelligent:
  186. - for slow monsters, in movement_rate(), instead of using mod, use
  187.   (randint(2 - speed) == 1) to make monster movement a little more uncertain
  188.   for fast monsters, give a little variance to speed, i.e. 66% of time monster
  189.   moves at speed, 17% of time move at speed+1, 17% of time move at speed-1
  190. - monsters which are about to die should flee if intelligent
  191. - monsters should breathe at player if only separated by a single column
  192. - better spell selection, don't cast teleport_to when standing next to
  193.   player, etc.
  194. - have monsters with multiple attacks spread the attacks over each turn if
  195.   moving slower than player, instead of doing nothing one turn, and then
  196.   attacking multiple times on the next turn
  197. - remember the previous two moves for each intelligent monster, so they can
  198.   tell which direction they are moving
  199.  
  200. in get_com(), get_dir(), etc, put -escape- on the msg line if escape
  201. key pressed, useful if message doesn't get deleted, but doesn't this
  202. always happen?, apparently not on the Atari ST MWC port
  203.  
  204. rubble can be generated underneath a monster, which should not happen
  205.  
  206. why call sigsetmask(0)?
  207. delete signals() and nosignals() as unnecessary?
  208.  
  209. killing a shell -1 results in the game disappearing without leaving
  210. a save file, what happened?
  211.  
  212. the save.c code that says "file exists, overwrite?", can this ever be
  213. executed?, if so, does it do the right thing?,  and also, what happens on
  214. EOF? will it go into an infinite loop on EOF?
  215.  
  216. what exactly does the damned flag mean, should it be on for all except known2
  217. items, or should it be on when an item is known to be cursed?
  218.  
  219. add ptodam to damage before calling critical_hits
  220. - adjust ptodam by max_swings/real_swings,this eliminates much of the adv
  221. of light weapons, since they no longer get more effect from to_dam bonuses
  222. - compute damage bonus as (base damage + 2) * (ptodam / 9) - 2, so that
  223. dagger bonuses are halfed, and two handed sword bonuses are doubled
  224. - increase cost of zweihander to 1500, to make it more than flamberge
  225. - modify C command to print to dam bonuses modified by weapon, should
  226.   print both the unmodified bonus, and the modified bonus
  227. - should take about 10 slay dragon arrows to kill AMHD, check this after
  228.   ptodam code is changed, may need to increase damages from +3?
  229.  
  230. when rogues list Beginners Majik spell book, spells are listed 'a'-'e',
  231. when cast from the spell book, spells are listed 'b'-'f', the spell casting
  232. list should also go from 'a'-'e', but this looks hard to fix
  233.  
  234. allow SPACE to exit from inventory commands
  235.  
  236. no monster, except Balrog, can resist mass polymorph, should I make it more
  237. like polymorph?
  238. mass polymorph is much higher level than polymorph, and is useful for
  239. dire emergencies, either don't give monsters a saving throw, or make is
  240. something like level/(3*MAX_MONS_LEVEL/2) which will make it possible but not
  241. certain that the staff will work on AMHD's
  242.  
  243. should mac port have a separate io.c file?
  244.  
  245. invisible monsters, and 'headless' monsters should not glare when recovering
  246. from a bash
  247.  
  248. version.inf file should not contain version number/copyright, these should
  249. be printed from the variable values
  250.  
  251. in misc1.c, the pusht code requires search of entire cave structure,
  252. this needs to be written more efficiently, perhaps put x,y into inven_type for
  253. every object located somewhere in the cave?
  254.  
  255. eliminate all #if 0 in the code
  256.  
  257. **************************
  258. Changes that can wait...
  259.  
  260. only let warriors get *GREAT* hits?
  261. in critical_hits(), change the threshholds to 400-600-800, which will make
  262. all melee weapons eligible for great hits, and only let warriors get great
  263. hits
  264. since this makes Mage's much worse fighters, swap Sleep II for Lightning
  265. Ball (giving a much needed intermediate Ball spell), and Recharge I for
  266. Object Dectection (to compensate for Priest's sense surroundings)
  267. DJG: object detection isn't very useful
  268.  
  269. increase the classes of weapons from 3 to 5, i.e. missile, blunt, assassin,
  270. melee (two handed weapons, etc., only these can do *GREAT* hits), and normal.
  271. Then modify fighting abilities as follows:
  272.          mis   blu   ass   mel   nor
  273.           a)    b)    c)    d)    e)              -- := suck
  274. Warrior   +     +     +     ++    +               -  := iffy
  275. Rogue     +     0     ++    -     0               0  := unchanged
  276. Mage      0     0     0     --    0               +  := improved
  277. Ranger    ++    0     0     0     0               ++ := hyperb
  278. Priest    0     +     -     --    0
  279. Paladin   0     ++    0     0     0
  280.  
  281. the monster memory always prints monster attack types and damage types
  282. together, this can lead to strange situations, for example, if a grey
  283. mushroom patch releases spores, but does not confuse the player, nothing
  284. appears in the monster memory because the player does not know they were
  285. confusion spores, but he/she does know that that spores are released
  286.  
  287. IBMPC COLOR
  288. - the experimental color support for PC-Moria does not work well when
  289.   trying to display a monster which is the same color as the background
  290. - the disenchanter w and b are not the same color
  291. - CHP changes to the same color as ball/breath that lowered it
  292. - all mushrooms are wrong, except the grey mushroom patch
  293. - invisible monsters can easily be found by casting stinking cloud at the walls
  294.   which will color all spaces green, except the one with the invisible monster
  295.  
  296. show how many spells player can learn via the 'G' command
  297.  
  298. add max mana to display in addition to current mana
  299.  
  300. add inscriptions that apply to a class of objects, not just a single instance
  301.  
  302. shouldn't be able to genocide invalid letters; escape out of genocide
  303.  
  304. have alternative messages to 'dies in a fit of agony', that gets
  305. a bit repetitive, and boring
  306.  
  307. a command to allow writing the monster memory to a file
  308.  
  309. get sources for nethack/omega, look for any really good ideas, also check
  310. to see how the implement Mac compatibility, portability, protection,
  311. and other general concepts
  312.  
  313. treasure.c has an arrow and a bolt out of order (arrow in the rings, and
  314. bolt in the amulets)
  315.  
  316. secret doors are always granite, would be nice to have secrets doors
  317. hidden in other types of rock, would make them less obvious when
  318. hightlight seams is on, also current scheme gives an advantage while searching
  319. since walls displayed as % obviously are not secret doors
  320.  
  321. MAX_SIGHT is 20, but rooms can be larger than twenty across, that gives
  322. strange situation where moving one step away from a monster in a large room
  323. can cause it to disappear, either increase MAX_SIGHT to be size of largest
  324. possible room size, or else use different MAX_SIGHT values in rooms/corridors/
  325. town level?
  326.  
  327. instead of printing 'it can hit to attack and hit to attack' print
  328. 'it can hit to attack twice' in monster descriptions?
  329.  
  330. can cheat by buying/selling a single object 20 times, and then have
  331. auto-haggle mode kick in, solution: set a bit in each individual object when
  332. it is first bought/sold so that it can only count once, will this work?
  333.  
  334. change haggling so that number of good bargains needed depends on price of
  335. object, for example, 10+(price/50), so that only 10 bargains needed for
  336. objects that cost less than 50gp, but 30 needed for objects that cost 1000gp
  337. if go immediately to final offer, then don't count it as a good or bad bargain
  338. items less than 10gp should perhaps always go to final offer?
  339. - change haggling so that initial price depends on how many good bargains
  340. you have had
  341. - add key to accept price, instead of forcing player to type in price
  342. - when reach perfect haggling, should just give object to player without
  343. asking for any prompt, bad idea if someone mistypes a letter
  344. - add an option so that player can play with or without haggling, without
  345. haggling, give prices that are always, say, 30% above the minimum
  346. - add store commands to buy/sell without haggling, with price say, 20%,
  347. less/greater than asking price
  348. - have haggling kick in sooner, use good_buy > 2 * bad_buy + 5
  349.  
  350. improve map command (see nethack), define an array of special characters,
  351. one for each type of composite wall, say, and then let end users specify
  352. the necessary graphic characters, allow for multiple character graphic
  353. sequences
  354.  
  355. combat in a room should have a chance of waking up sleeping monsters, except
  356. that it would not be fair, since monsters can send breath weapons through
  357. other monsters, but the player can only attack the nearest monsters
  358.  
  359. (high level?) monsters should slowly regenerate hit points, esp since the
  360. doc states that the Balrog does
  361. note, if leave level and come back, the Balrog is regenerated (sic) with
  362. full hit points
  363. every 128 turns, let monsters regenerate 1/64 of their total hit points?
  364.  
  365. have several different types of Balrog, i.e. a fire breathing one,
  366. a cold breathing one, a lightning breathing one, etc.
  367.  
  368. should be a chance of weapons breaking when try to dig with them?
  369. NO, it is too easy to dig with weapon by accident, shouldn't dull them unless
  370. there is some way to sharpen them which there currently isn't
  371.  
  372. can get small groups of rooms which are connected to each other, but not
  373. to the rest of the rooms on the level, perhaps check for cycles in
  374. tunnel/room graph before trying to build tunnels?
  375.  
  376. can not use counted commands while bashing a door, because of the
  377. paralyzation that sometimes occurs always stops a counted command
  378.  
  379. does noneedtobargain() kick in too late??
  380.  
  381. allow character building, by allocation of a limited number of stat points,
  382. instead of random rerolling??
  383.  
  384. add another aux inventory slot, so that there is one for picks, and one for
  385. bows
  386.  
  387. decrease mithril values, increase gem values, more expensive items in the
  388. shops, should be greater difference between prices of low level objects
  389. and high level objects, more gold/silver/copper on lower levels, selling
  390. high enchanted objects should not be so profitable
  391. (good idea here, favorite suggestion for fixing the money problem)
  392.  
  393. in object_offset(), give 70/71 and 75/76 different codes, shift by 5 (32)
  394. everywhere instead of 6 (64), reduce size of object_ident[] from
  395. 7*64 to 9*32, objects 71 must all have 2 added to subval so that they
  396. start at 96, objects 76 must all have 1 added to subval
  397.  
  398. all variables (including bss) should be initialized before they are used,
  399. see the mac sources
  400.  
  401. add a macro capability
  402.  
  403. most case statements should use table or if/else instead, table are much
  404. faster, both give much smaller code
  405.  
  406. if have one unidentified object, and sell it to a store, and it gets
  407. identified, and you happen to have some similar store items, you will get
  408. a 'combining' message, even though no combining is really taking place,
  409. perhaps adding an extra parameter to identify which indicates whether
  410. the item will remain in inventory after ident, if it does not remain,
  411. then should not give combining message if there is only one of them
  412.  
  413. many of the constants in constant.h should really be enums instead, this
  414. would make the game more maintainable
  415.  
  416. some fields of treasure_type are const and could be deleted
  417.  
  418. missile weapons should be made more useful, make them stackable after
  419. identified if they are identical, increase the benefit of using proper
  420. bow/arrow combo, increase +todam, +tohit more than now, perhaps give
  421. an advantage here to fighters/paladins/rangers/rogues somehow, don't
  422. decrease ptohit so much in inven_throw() (currently reduced by distance)
  423.  
  424. should recall info be set in breath() for other monsters?
  425.  
  426. finish monster compiler, write defs for all monsters
  427.  
  428. should be able to increase digging plusses for weapons??
  429.  
  430. should be able to increase ring plusses?? this would seriously unbalance
  431. the game if allowed
  432.  
  433. in the store bargain code, separate the sell good bargains from the purchase
  434. good bargains?  this is important for owners with very high inflate values
  435. as it is easy to reach sell final value, but very difficult to reach purchase
  436. final value, change from 20 to 10 if do this
  437.  
  438. change move to take a char-number i.e. '0' instead of a number, i.e. 0
  439.  
  440. put all prt_ functions into a separate file, put all movement functions
  441. in a separate file
  442.  
  443. define constants for all possible tchars, number-directions, attack-types,
  444. last_line = 23, scroll flags, potion flags, etc
  445.  
  446. would be nice if 10-23 were all wielded objects, i.e. move light 15 outside
  447. this range
  448.  
  449. use scroll bars on the Mac version for showing the rest of the level,
  450. L/W, might be confusing since this won't scroll the whole window, only
  451. the dungeon view
  452. have multiple windows, one for inventory, one resizable/scrollable for
  453. dungeon view, etc...
  454.  
  455. should eliminate need for 70/71 scrolls and 75/76 potions
  456.  
  457. replace hex flag fields in treasure with constants
  458.  
  459. should not get message "something rolls under feet" when step on a loose rock
  460. /* Hid Obj*/ trap?, also should not get this message when cast create food
  461. some people prefer to have these messages though
  462.  
  463. %%%%%%%%%%%%%
  464. ideas from Bron Campbell Nelson bron%bronze.wpd.sgi.com@sgi.sgi.com
  465.  
  466. potion of boldness should have duration, i.e. should be safe from fear for
  467. a little while after quaffing boldness potion (also heroism/super-heroism)
  468. the current length values seem a little long, perhaps just improve the
  469. characters resistance to fear?
  470.  
  471. warriors too hard, give them more hitpoints?, lower base-to-hit of other
  472. classes?, fix warrior so can withstand one AMHD poison breath attack?
  473.  
  474. boots of speed are too hard to find, 1/7000 is ring of speed, 1/14000+ is
  475. boots of speed, other evidence suggests that boots are about 10 times as
  476. rare as rings
  477.  
  478. items needed for win: see invisible, free action, resist fire, speed, if
  479. add black market, don't make it too easy to get these items
  480.  
  481. black market suggestions:
  482. staff of teleportation 20000, staff of speed 100000, mushroom of restoring
  483. 20000, and perhaps some powerful archery items
  484.  
  485. heavy armor is useless, does not protect against spells/breate, and reduces
  486. from to-hit, reduce penalty for characters with high STR?
  487.  
  488. new shop: enchantorium, where enchantments can be purchased for a high
  489. price, price proportional to how many enchants already there (i.e. enchanting
  490. a +9 item costs a fabulous amount, but enchanting a +0 item costs a little
  491. more than one enchant armor/weapon scroll), allow enchant to any value, i.e.
  492. AC/digging for HA/DF, digging for picks/shovels/etc, etc...
  493.  
  494. less reasonble suggestions follow...
  495.  
  496. too many weapon types, the variety is useless
  497.  
  498. have armor protect by subtracting ac/10 (sic) instead of reducing by %
  499.  
  500. speed is too important, need smaller time quanta
  501.  
  502. race/class adjustments should be more meaningful, give races/classes max
  503. stat values which are not 18/100
  504.  
  505. add an autosave option
  506.  
  507. add more up stairways? currently there are only randint(2) per level,
  508. perhaps guarantee that there will be at least 2
  509.  
  510. warriors should automatically recognize ego weapons
  511.  
  512. dispel evil/undead are nearly worthless since they do not do much damage for
  513. their mana cost, change dispel_creature from mon_take_hit (i, randint(damage))
  514. to mon_take_hit (i, damage)
  515.  
  516. rune of protection is too powerful, reduce OBJ_RUNE_PROT to 800, maybe 1000,
  517. if make this change, should make the spell somewhat easier to cast, say
  518. 50% for a level 33 priest
  519. DJG: this makes them much less useful against the Balrog
  520.  
  521. Balrog should not cast cause serious wounds as it does less damage than a
  522. normal attack, should not cast slow/paralyze since the player almost
  523. certainly will have some form of free action
  524.  
  525. %%%%%%%%%%%%%%%%%%%%%%%%%
  526.  
  527. reincarnate, and lose 1/2 exp?
  528.  
  529. give enchant scrolls (or perhaps just *enchant*) a small probability
  530. of creating ego weapons
  531. give enchant scrolls a small probability of destroying ego enchantments
  532. if they fail to increase pluses
  533.  
  534. make the number of hits per round probabilistic, i.e. instead of getting
  535. 1/2/3/4 hits per round, gives weapons 2.4 hits per round etc, to smoothen
  536. the curve
  537.  
  538. perhaps add option to order monsters differently?
  539. give list of all monsters of that type, and then recall all if type 0,
  540. else only recall the one indicated by the number typed in
  541. change ident_char() in help.c
  542.  
  543. have all top level action functions (aim, move, throw, inven_command, etc.)
  544. return true if took a turn, otherwise false
  545.  
  546. add command to show number of turns played, time spent playing, date character
  547. started, perhaps even a calendar to give game date '1037 in the Third Age'
  548.  
  549. enter_store in store2.c calls draw_cave when exiting the store, it should
  550. save the current screen contents away in memory and then restore from that
  551. saved screen
  552.  
  553. if type control-C while resting, sometimes the counter is not cleared, happens
  554. often when count less than 10, to fix, should move all I/O code out of signal
  555. handler, it should just set a flag and return
  556.  
  557. should examine_book(), scrolls(), and spells/prayers work when hallucinating?
  558.  
  559. change player attributes to counters, things like sustain_stat, etc.
  560. this would greatly simplify calc_bonuses()
  561.  
  562. should not be able to stun creates which do not move, and creatures
  563. which have no brains
  564.  
  565. los code used to determine if monsters are visible but not for objects,
  566. this leads to strange situations, when room lights up, one can see all objects
  567. in the room, but must enter the room before can see then monsters
  568.  
  569. have the monster generator make a table of undead monster indexes, to simplify
  570. summon_undead()
  571.  
  572. add some unique levels to make it more interesting, mazes, etc.
  573.  
  574. add a metric option
  575.  
  576. add diagonal corridors???
  577.  
  578. add a storage rental shop, so players can save objects until they need them,
  579. but must pay for the priviledge, and have to go back to level 0 to
  580. retrieve the objects
  581.  
  582. create a safe haven for the player, where hp regen faster, poison/disease
  583. cure faster, and player must be in to win
  584.  
  585. add amulet of poison resistance, make it a help level item, people would
  586. have to take off a amulet of the magi to wear it
  587.  
  588. add another set of gain stat potions, at about 1550 feet, to encourage
  589. people to go deeper in search of them
  590.  
  591. add a bank for saving/borrowing money (I don't like this), would rather
  592. make money less plentiful, perhaps make magic items less profitable to
  593. sell?
  594.  
  595. possible AD&D enhancements
  596. mages can't wear armor and cast at the same time, stealth decreases
  597. when wearing armor (for thieves), priests can't use edged weapons, spell
  598. casting takes time (more than one turn for high level spells?), ranger
  599. attack bonuses, paladin's laying on hands and wealth limits
  600.  
  601. give females better dexterity, and/or better spell casting ability, and/or
  602. more stealth
  603.  
  604. Orcs should always appear in groups?
  605.  
  606. possible balancing enhancements
  607. characters have max stat of 18/50+ initial race/class mod, for example,
  608. human mage has max str of 18/50 - 5 = 18.
  609. increase warrior HP so that a warrior can withstand one breath of any type
  610. frlom any dragon
  611. dex is very important, so everybody should have a chance of getting high
  612. dex values
  613.  
  614. add option to find code so that it can optionally stop before lighting
  615.     up or entering a room
  616. add otpion to find code so that will enter corridor intersections
  617.  
  618. Change key-dispatch table in dungeon.c back to ORIGINAL mode.
  619.  
  620. put shell_out code in OS dependent files, unix.c/msdos.c/etc.
  621.  
  622. save all levels, problems with the sheer size of doing this, 10K * 50 levels
  623. is 500K total
  624.  
  625. change stats to straight 1-40 range
  626.  
  627. replace sets.c with an array ~110*16 with a flag for each type of damage
  628.     faster and smaller than current scheme
  629.  
  630. add option to loc_symbol so that it can optionally print char to screen,
  631.     most loc_symbol calls feed directly to print()
  632.  
  633. the look code uses a different algorithm from the los code, is recursive,
  634.     hard to understand, has 3 gotos, I would prefer code more like los
  635.     using the shading ideas of jnh
  636.  
  637. lose_dex is never called, well, we'd better fix that!
  638.  
  639. for characters with low dex, should have slight chance of dropping weapon,
  640. maybe less for fighters, more for mages and priests, should also trip
  641. occassionally when running
  642. acid attacks should lower charisma?
  643.  
  644. the first nasty invisible monster is the Banshee at 1200 feet, so need to
  645. have see invisible items start appearing at about this time, the current
  646. balance seems OK to me though
  647.  
  648. black mold, and shimmering mold have 00000080 CMOVE flag set which has no
  649.     effect
  650.  
  651. boots of great mass can be identified by checking the weight display,
  652. should eliminate them and replace with some other type of cursed boots
  653. suggestion: boots of two left feet, (- to dexterity)
  654.  
  655. add another field to monster_type, treasurep, cloned/multiplyed monsters
  656.     should not have treasure, but if they pick up an object, then
  657.     again let them carry treasure
  658.  
  659. change randnor from table lookup to 8d99, save 512 bytes for table
  660.  
  661. remove ASCII dependencies
  662.     many places assume that a-z are consecutive, i.e. 'a'+25 = 'z'
  663.     the hallucination code assumes ascii - randint(95)+31 (misc1.c)
  664.  
  665. eliminate sscanf calls in ms_misc.c and wizard.c
  666.  
  667. allow numbers instead of letters in menus, i.e. spell lists, inventory/equip
  668.     lists
  669.  
  670. don't use num-lock for tunneling in PC version, this is a locking key
  671.  
  672. characters accumulate too much cash, perhaps do this:
  673.     change OBJ_TOWN_LEVEL from 7 to 17, and change place_gold() in misc2.c
  674.     293c293,294
  675.     <   i = ((randint(dun_level+2)+2)/2.0) - 1;
  676.     ---
  677.     > /* NF: Change randint multiplier from (r(d+2)+2)/2 to (r(d+2)+4)/3 */
  678.     >   i = ((randint(dun_level+2)+4)/3.0) - 1;
  679. the fixes above (decrease mithril values ...) are preferable
  680.  
  681. show time elapsed playing, date character started, and number of turns
  682. elapsed
  683.  
  684. have option to put inventory/equipment list on one screen
  685.  
  686. set a timer, and if the game has been idle for 15 minutes, gracefully
  687. save and exit?
  688.  
  689. new monster suggestions by berman-andrew@yale, because there are no
  690. medium difficult mosnters before level 40...
  691. {"Electric Golem", 0x00020002, 0x00080004, 0x1080, 100, 380,
  692.   12, 85, 0, 'g', "70d8", "8 1 1d24|8 1 1d24", 35}
  693. {"Queen Harpy",    0x37120012, 0x00008208, 0x2036, 100, 1200,
  694.   20, 80, 2, 'h', "46d8", "1 3 2d6|1 3 2d6|1 2 2d12|3 7 0d0", 35}
  695.  
  696. new monster suggestions by Don Dodson
  697. Nether Lich: invisible, phases through walls, similar to Emperor Lich in
  698.     other respects
  699. Archer: fires arrows that do normal damage, or poison, or reduce stat
  700. Wizard: Like a sorceror but more powerful.  Casts fireballs, summons all sorts
  701.     of nasties, blindness, and hold person.  Very high saving throw
  702.     and resistant for fire/frost.
  703.  
  704. balls should affect player if inside radius, unfortunately, this is not
  705. really such a good idea, since the player is often forced to cast to the
  706. next space, would be OK if the player can specify any point for the target
  707. of the spell
  708.  
  709. when resting, a player should have a chance of not waking up when a monster
  710. enters a room
  711.  
  712. add wizard command that would create new MORIA_HOU file, since there already
  713.     is a default def for it, otherwise, make days array bss
  714.  
  715. for HA weapons, p1 is used for both str increase, and sustain stat
  716.  
  717. rewrite my own sprintf routine that just takes strings %s and integers %d
  718. and nothing else, may be faster/smaller than the library version, or perhaps
  719. have a routine which cats 3 strings together, or 2 strings and an int
  720.  
  721. age characters before killing them of Ripe-Old-Age
  722.  
  723. these commands which take a dir should not work when confused,
  724.    bash, closeobject, jamdoor, openobject
  725.  
  726. monsters need a 'not carry large object' flag in CMOVE, have all chests (type
  727. 2), polearms (type 22) and staffs (type 55) be large objects, these should
  728. be rerolled if they occur when only small objects allowed, chests should have
  729. this bit set, also small creatures should have it set: kobolds, mummified
  730. kobolds, greedy little gnomes, scruffy-looking hobbits.
  731.  
  732. trap names are vague,
  733.    have two names for each trap, a simple search discloses current vague name,
  734.    setting it off, or a find/identify trap gives the long name
  735.  
  736. allow option of making aux files either hard coded paths, or paths relative
  737. to the executables directory, could then make the aux files relative, put
  738. exe file in same directory as aux files, and start up program with shell
  739. script that cds to aux file direcotry, this makes it easy to keep multiply
  740. moria versions around
  741.  
  742. allow rerolling after choose race/class
  743.  
  744. still too slow on i/o, perhaps rewrite to avoid refresh() calls?
  745.     perhaps use only motion optimization stuff?
  746.  
  747. should we call m_name if spell only applies to visible creatures?
  748.  
  749. when moving on objects, say what character moved onto (like rogue)
  750.  
  751. for throw command, ask for direction first (like rogue)
  752.  
  753. should be able to enchant to-hit to-dam of gauntlets of slaying?
  754.    likewise, enchant toac of HA swords, etc.
  755. either should allow enchant of HA sword toac, or else disenchanter bats
  756.   should not be allowed to reduce it
  757.  
  758. fix save files to include obj desc, then only need one random number
  759.     generator which can use table program
  760.  
  761. give rogues detect treasure and detect objects, also give them a chance to
  762. steal objects from monsters
  763.  
  764. modify 'x' command to show monster hitpoints
  765.  
  766. replace magic numbers with constants
  767.  
  768. name objects if use did not identify them
  769.  
  770. when creature steals and then dies, the stolen item should appear, unless
  771. creature has teleported away in the meantime
  772.  
  773. always add exp to current and max, instead of just increasing max when current
  774. exceeds it, this would make attacking undead creatures a little more profitable
  775. since you are guaranteed a net gain of exp if you kill it, even if it drains
  776. a lot of EXP from you
  777.  
  778. allow chests to hold items
  779.  
  780. have a global variable, savefile field to keep track of the number of times
  781. a character has been resurrected
  782.  
  783. should not be able to use a two-handed weapon (two-handed sword, pole arm,
  784. bow, crossbow, flail, etc.) at same time as wearing a shield
  785. should be able to also choose to wield two weapons, but with a penalty of
  786. some sort, probably lowered AC
  787.  
  788. can't cast in any direction, should be able to, should also be able to cast
  789. down at feet (5), should be able to cast area affect spells (balls) at any
  790. point, so that the burst will affect any desired area
  791.  
  792. Long term stuff, enhancement suggestions:
  793. give player something to do with money, i.e. 1Million gp for HA +10 +10 sword
  794. 'flavor' the levels, dragons on one level, undead on another, etc.
  795. what's been discovered list
  796. commands not close enough to rogue style
  797. fixed item lettering in inventory, in-line/cmd-line options?
  798. command line option to print out times open
  799. Y destroy command, allow destroy from equipment list
  800. let o, c, D commands automatically pick direction when they can
  801. give rogue's a chance to steal, e.g. let monsters carry items that they
  802.   pick up, if rogue fails, then monster gets a free hit, otherwise monster
  803.   stays asleep, with a small chance of monster waking up
  804. give magic users a chance at pre identifying scrolls
  805. could use a help system, like VMS version
  806. have multiple character parties, note that almost everything character
  807.     dependent is stored in the py structure already
  808.  
  809.  
  810. could reduce the size of the types.h file (and other source files too) if
  811.     eliminate reduce type specifiers, i.e. int32u cmove;\n int32u spells;
  812.     could be int32u cmove,\n        spells;
  813.  
  814. add color, i.e. red dragons show up as a red 'D', etc
  815.  
  816. an inn on the town level, in which you must pay to stay, could be used
  817. by those who need to wait to get back into a store, or who want to wait
  818. until a store's inventory changes
  819.  
  820. when look at monsters, give monster state in addition to monster name, i.e.
  821. "You see a sleeping ancient red dragon."
  822.  
  823. add code to the get_dir() function so that one can optionally specific a
  824.     hex instead of a direction, i.e. if you enter '.', then program goes
  825.     into a cursor positioning mode, allowing you to move the cursor to
  826.     the spot you want to specify
  827.  
  828. don't like the player_exp values, the increase is not very even, especially
  829. in the upper levels
  830.  
  831. cloak of protection is misleading, it has no special features
  832.  
  833. need documentation on what each spell/prayer/staff/etc does, this is needed
  834.     for priestly spells in particular, since these are non obvious
  835.     also needed for special objects, such as crown of magi
  836.  
  837. eating elvish waybread for curing can cause a character to become bloated and
  838.     start moving slower, either decrease food value of ew to 5000, or
  839.     increase player food limit to 17500, or combination of both, or perhaps
  840.     change the you are full message, maybe have another message at 7500?,
  841.     or maybe make elvish waybread immune to the slowing effect
  842.  
  843. monsters should be more intelligent, should know about corridors so that they
  844. don't get stuck in dead ends, or continually retrace their movement
  845.  
  846. RNG for Moria should have a table shuffle, see Knuth
  847.  
  848. don't update store inventories across save, unless the save file is at least,
  849. say, an hour old
  850.  
  851. when monster appears, print its name, may need some work to work reasonably
  852.     with detect spells
  853.  
  854. Features:
  855. hero/superhero do not subtract hit points when effect wears off
  856. WOR scroll can save you with minus hit points!!
  857. detect monster does not detect invisible monsters (normally)
  858. can hit monsters in walls, but can not cast at them
  859. can not enchant something with negative numbers (i.e. cursed items)
  860. how does armor protect against breath/gas? it doesn't!!!
  861.  
  862. missing amulets: strength, constitution, intelligence, dexterity
  863. missing rings: gain wisdom, gain charisma
  864.     note that missing rings/amulets are disjoint
  865. missing detect monster potion (feature!)
  866. missing blank scrolls (feature!)
  867. missing staff genocide (feature!)
  868. missing staff mass_genocide (feature!)
  869.  
  870. D&D Inconsistencies, most of these should not be fixed since that would
  871.     unbalance the game:
  872. priests should not need light for prayers
  873. magic missile should do 1d4+1 per level
  874. detect invisible should last 5 rounds, instead of 1
  875. stinking cloud should be renamed cloudkill
  876. fireball does 1d6 per level, should destroy all paper/wood and melt metal
  877. lightning does 1d6 per level
  878. hold monster 1 round per level of caster
  879. phase door by touching a wall, and end up on other side of the wall
  880. light spells should be mobile
  881. heroism should not work when over level 11, superheroism should not work when
  882.     over level 14
  883. rings can not be used cummulatively, rings or prot have no effect if
  884.     wearing armor
  885. Flame Tongue, +3 versus cold creatures and avian, +4 vs undead
  886. Holy Avenger, +50% on all saving throws
  887.  
  888.